首先需要了解一下为什么要使用Maven

  • 一个项目就是一个工程
      如果一个项目非常庞大,就不适合继续使用Package来划分模块。最好是每一个模块对应一个工程,利于分工协作。而利用Maven就可以将一个项目拆分为多个工程。
  • 项目中需要jar包必须手动“复制”、“粘贴”到WEB-INF/lib目录下
      带来的问题:同样的jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿。借助Maven,可以将jar包仅仅保存在“仓库”中,有需要使用的工程“引用”这个文件接口,并不需要真的把jar包复制过来。
  • jar包需要别人替我们准备好,或者到官网下载
      不同技术的官网提供的jar包下载方式是不同的,有些jar包我们进不去别人的官网,只能从第三方网站下载,而第三方的网站的jar包可能是不规范的。而借助于Maven我们可以以一种规范的方式下载jar包。因为所有知名的jar包都会以规范的方式下载jar包,内容可靠。
  • 一个jar包依赖的其它jar包需要自己手动加入工程中
      有些jar包会依赖很多个jar包,而被依赖的jar包也可能依赖其它jar包,这些依赖关系我们必须记下来,这样就会使程序员整加学习成本。不然我们把不完整的jar包导入到工程中,将会出现报错。而使用Maven将会自动把依赖的jar包导入进来。

    我们来了解一下什么是Maven

      Maven是一款服务于java平台的自动化构建工具。构建就是以java源文件、框架配置文件、JSP、HTML、图片等资源为原材料,去生产一个可运行的项目的过程。这个过程主要分为编译、部署、搭建。
    构建的各个环节:
    [1]清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
    [2]编译:将Java源程序编译为字节码文件。
    [3]测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
    [4]报告:将每一次测试后以标准的格式记录和展示测试结果。
    [5]打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对象war包。
    [6]安装:在Maven环境下特指将打包的结果——Jar包或War包安装到本地仓库中。
    [7]部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。

    如何使用和创建一个Maven工程

  • 配置Maven环境变量
    MAVEN_HOME:解压Maven核心程序的路径\apache-maven-3.6.1-bin
    path:%MAVEN_HOME%\bin
  • 验证Maven是否配置成功(在控制台输入mvn -v)
    在这里插入图片描述
  • 创建Maven工程
      在创建之前必须要知道Maven所约定的Maven目录结构,我们创建这个工程必须按照这个约定的结构去创建,因为我们写的代码最终是要交给Maven去处理的,比如说java源代码编译,只有按照这个Maven约定好的目录去创建,Maven才知道去哪找java源代码编译。
    Maven的目录结构:
    在这里插入图片描述
    HelloMaven:根目录(工程名)
    src:源码
    pom.xml:Maven工程的核心配置文件
    main:存放主程序
    test:存放测试程序
    java:存放java源文件
    resources:存放框架或者其它工具的配置文件
  • 编写Maven项目
    [1]编写pom.xml文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?xml version="1.0" ?>
    <project xmlns = "http://maven.apache.org/POM/4.0.0"
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!-- 模型版本 -->
    <modelVersion>4.0.0</modelVersion>
    <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
    <groupId>com.xiezhenyu.maven</groupId>
    <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
    <artifactId>HelloMaven</artifactId>
    <!-- 版本号 -->
    <version>1.0</version>
    <!-- 依赖的jar包 -->
    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
    </dependency>
    </dependencies>
    </project>

[2]编写主程序代码
  在src/main/java/com/xiezhenyu/maven(一般以公司域名倒写的方式命名)目录下新建文件HelloMaven.java,其内容如下

1
2
3
4
5
6
7
package com.xiezhenyu.maven;
public class HelloMaven{
public String sayHelloMaven(String name){
System.out.println("HelloMaven!");
return "Hello "+name+"!";
}
}

[3]编写测试代码
  在src/test/java/com/xiezhenyu/maven(一般以公司域名倒写的方式命名)目录下新建文件HelloMavenTest.java,其内容如下

1
2
3
4
5
6
7
8
9
10
11
package com.xiezhenyu.maven;
import org.junit.Test;
import static junit.framework.Assert.*;
public class HelloMavenTest{
@Test
public void testHelloMaven(){
HelloMaven helloMaven = new HelloMaven();
String results = helloMaven.sayHelloMaven("xiezhenyu");
assertEquals("Hello xiezhenyu!",results);
}
}

以上一个简单的Maven项目就搭建起来了。

如何测试运行一个Maven项目

在测试之前先要了解一下Maven的常用命令

  • 注意:执行与构建过程有关的Maven命令的时候,必须进入pom.xml所在的目录

  • 常用命令
    [1]mvn clean : 清理
    [2]mvn compile : 编译主程序
    [3]mvn test-compile : 编译测试程序
    [4]mvn test : 执行测试
    [5]mvn package : 打包
    [6]mvn install : 安装
    [7]mvn site :生成站点

  • 在编译之前,我们如果是第一次使用maven我们本地仓库中没有项目所需的jar包,我们需要联网
    [1]Maven 的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须有特定的插件来完成。而插件本身不包含在Maven核心程序中。
    [2]当我们执行的Maven命令需要用到某些插件时,Maven核心程序会首先到本地仓库中查找。
    [3]本地仓库的默认位置:[系统登陆用户的家目录] \ .m2\repository
    [4]Maven核心程序如果在本地仓库中找不到需要的插件,那么它会自动连接外网,到中央仓库下载。
    [5]如果此时无法连接外网,则构建失败。
    [6]修改默认本地仓库的位置可以让Maven核心程序到我们事先准备好的目录下查找插件
     ①找到Maven解压目录\conf\settings.xml
     ②在setting.xml 文件中找到 localRepository 标签
     ③将 < localRepository>/path/to/local/repo< /localRepository>从注释中取出
     ④将标签体内容修改为自定义的Maven仓库目录

  • 执行mvn compile命令(cmd必须进入pom.xml所在的目录)
    在这里插入图片描述  可以发现我们在目录中生成了target目录,里面有classes,里面生成的是主程序编译后的结果(其中生成的maven-status目录是maven的状态,保存一些创建和输出的信息等)
    在这里插入图片描述

  • 执行mvn test-compile命令
    在这里插入图片描述可以发现target目录新加了test-class目录,里面,里面生成的是测试程序编译后的结果

  • 执行mvn test命令
    在这里插入图片描述
    可以发现target目录新加了surefire-reports目录,里面生成的是测试报告相关的文件,控制台输出如下
    在这里插入图片描述可以发现,我们的测试运行已经成功了。

  • 执行mvn package命令
    在这里插入图片描述  可以发现,在target目录新生成了一个目录和一个jar包,maven-archiver目录存放的是这个jar包的基本信息,jar包是主程序编译结果打成的一个jar包,将jar包解压,我们可以看一下jar包的内容
    在这里插入图片描述
    在这里插入图片描述  我们可以发现打包出来的并没有测试程序的内容,只有主程序的内容,里面也并没有这个工程所依赖的jar包,这样我们的工程就不会显得臃肿,如果我们将我们开发的这个模块导入到其它工程中就会方便很多。
    我们再看一下执行mvn package命令控制台的输出
    在这里插入图片描述可以发现我们在执行打包命令时它也执行了测试,这就涉及到Maven的生命周期了。(与本篇无关,详情查看下一篇Maven)


以上就是如何快速使用Maven的方法